// P1012
// 好思维
// n个整数将它们联接成一排，相邻数字首尾相接，组成一个最大的整数。
#include<bits/stdc++.h>
using namespace std;
string s[21];
int n;
bool cmp(const string &a,const string &b) { // &表示引用
    return (a+b > b+a);
    // 自定义排序函数，这一步非常巧妙，
    // 假设 a = 321，b = 32；a + b = 32132，b + a = 32321
    // 这样下面sort排下来就是32 > 321
    // 避免出现32132 > 32321的情况 
}
int main(void) {
    cin >> n;
    for(int i = 1; i <= n; i++) 
        cin >> s[i];
    sort(s + 1, s + n + 1, cmp);
    for (int i = 1; i <= n; i++) 
        cout << s[i];
    return 0;
}